Programs which grant users access to a system verify each user's identity through a process called authentication. Historically, each such program had its own way of performing the task of authentication. Pluggable authentication modules (PAM) is a mechanism to integrate multiple low-level authentication schemes into a high-level application programming interface (API). It allows programs that rely on authentication to be written independent of the underlying authentication scheme.
Typically, a PAM-based authentication process consists of a serial stack of authentication modules that have to run one after another in a very specific order. This arrangement does not provide sufficient flexibility to support different authentication requirements of various systems.